home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 52
/
Aminet 52 (2002)(GTI - Schatztruhe)[!][Dec 2002].iso
/
Aminet
/
docs
/
mags
/
saku14.lha
/
Teksti
/
AMOS.txt
< prev
next >
Wrap
Text File
|
1995-08-28
|
5KB
|
107 lines
5
1*
{3 Ongelmia ja niiden ratkaisuja aloitteleville AMOS-ohjelmoijille
{3 ---------------------------------------------------------------
Samuli Holopainen
Tämä artikkeli on tarkoitettu lähinnä AMOSia aloitteleville, mutta useat asiois-
ta koskevat myös muita BASICin tapaisia kieliä. Kerron ongelmista, joihin olen
törmännyt ohjelmoidessani AMOSilla sekä niiden ratkaisuista.
- AMOSin ohjelmia ei saa käynnistymään suoraan, ennen kuin ne kääntää AMOS Com-
pilerilla koneen ymmärtämään muotoon. Compiler pitää hankkia erikseen.
- Print-käskyn jälkeen tulevien lainausmerkkien sisälle voi kirjoittaa mitä ta-
hansa (jostain syystä kaikki eivät ymmärrä tätä).
- BOB tai Sprite (Easy AMOSissa on vain BOB, Creatorissa ja ja Pro'ssa molemmat)
saadaan liikkumaan piirtämällä se joka kerta uudestaan mutta eri paikkaan. Oh-
jelmanpätkä voisi olla esimerkiksi seuraavanlainen:
Load "DF0:Bobs.abk" ` Lataa Bobs.abk-tiedoston DF0:sta.
Double Buffer ` Kaksoispuskuri, jolloin BOBit lakkaavat välkkymästä.
Flash Off ` Lopettaa värin numero 3 vilkkumisen (mm. kursori).
Get BOB Palette ` Ottaa BOB-pankin väripaletin.
XCOORD=10 ` X-koordinaatti on 10 pistettä vasemmasta reunasta.
YCOORD=20 ` Y-koordinaatti on 20 pistettä ylälaidasta alas.
IMAGE=2 ` Image eli BOB-kuva numero 1 BOB-pankista.
Do ` Silmukan alku.
Bob 1,XCOORD,YCOORD,IMAGE
` BOB 1 on XCOORD:in ja YCOORD:in määrämässä paikassa
` kuvalla, jonka IMAGE määrää. Alussa Bob 1,10,20,2.
XCOORD=XCOORD+1 ` XCOORD on nyt XCOORD + 1, jolloin kuva liikkuu yhden
` pisteen oikealle.
If XCOORD=250 Then XCOORD=10
` Jos XCOORD on 250 se palaakin arvoon 10.
IMAGE=IMAGE+1 ` IMAGE on IMAGE + 1. Kuvaa vaihtamalla voimme tehdä
` esimerkiksi animaation, jossa BOBin vaihtuvat ja
` liikkuvat kuvat loihtivat ruudulle kävelevän hahmon.
` Tällöin kuvissa hahmon jalat ovat tietenkin hieman
` eri asennoissa.
If IMAGE=4 Then IMAGE=1
` Jottei kaikkia BOB-pankin kuvia käytäisi lävitse ja
` kävely näyttäisi toistuvan, laitetaan kuvan numero 4
` tullessa kuvan numero 4 sijasta kuva numero 1
` uudelleen, jolloin liike toistuu.
Loop ` Silmukan loppu. Ohjelma hyppää takaisin Do-riville.
Huom! AMOS laskee `-merkin jälkeiset merkit rivillä kommenteiksi, joten heitto-
merkin jälkeinen osa riviä voi sisältää mitä vain, kuten näissä esimerkeissä
selventäviä huomautuksia.
Mikäli BOBin halutaan pysyvän paikoillaan ilman että kuva vaihtuu ja vie pahasti
tehoja, kannattaa BOB piirtää vain kerran. Tämä tapahtuu laittamalla ennen Do-
riviä vaikkapa Bob 2,200,130,4 jolloin BOB 2 tulee kohtaan 200, 130, eikä tee
tämän jälkeen mitään (pysyy paikoillaan).
- Koska monilla on pahoja vaikeuksia muuttujien kanssa, niin yritän selittää
asian mahdollisimman perusteellisesti. Muuttujan nimenä voidaan käyttää ihan
mitä tahansa kirjainyhdistelmää (kunhan se ei vain ole käskyn nimi) esim. A, B,
C, D, DE, GHF tai vaikka SAKU. Muuttujia käytetään pitämään muistissa jotain
asiaa, esim. numeroa, joka merkitsee pelissä kellonaikaa. Koska aika muuttuu,
niin jonkin täytyy olla ajasta perillä, jotta esim. pelaaja voisi sitä sitten
katsoa.
Tähän tarkoitukseen voimme käyttää vaikka kirjainta K (kuin kello). Pakko ei
tietenkään ole käyttää kirjainta K, vaan yhtä hyvin voisimme käyttää vaikkapa
A:ta tai juuri KELLO:a. Koska kellon täytyy jo aluksi olla jotakin, niin laitam-
me alussa kellonajaksi vaikkapa 76. Tämä kello ei ole "oikea" kello, vaan menee
ympäri aina 200:n välein.
K=76 ` K-muuttujan arvoksi asetetaan 76.
Emme halua kellon muuttuvan joka kierros takaisin 76:ksi, joten laitamme silmu-
kan vasta sen jälkeen.
Do ` Aloittaa silmukan.
K=K+1 ` K kasvattaa arvoaan yhdellä.
Koska emme halua kellon menevän liian suureksi, niin päätämme kellolle rajan,
jonka ylitettyään se aloittaa alusta. Tässä tapauksessa se olkoon 200.
IF K=200 THEN K=1 ` Jos K on 200, niin sen arvo muutetaan 1:ksi.
Nähdäksemme ohjelman toiminnan lisäämme vielä komennon tulostamaan kellonajan
ruudulle.
Print K ` Tulostaa ruudulle K-muuttujan arvon.
Loop ` Silmukan loppu. Ohjelma hyppää takaisin Do-riville.
Edellä käytetyn kaltaisia muuttujia voi käyttää vain numeroiden muistiintallen-
tamiseen, mutta jos lisäämme muuttujanimen perään dollarimerkin ($), niin muut-
tujaan voidaan tallettaa sanoja. Esim:
SANAA$="Tapa tuo kärpänen!"
SANAB$="Käteni! Ne ovat päässäni!"
Print SANAA$ ` Tulostaa SANAA$-muuttujan sisällön.
Print SANAB$ ` Tulostaa SANAB$-muuttujan sisällön.
Ohjelman ulosanti olisi seuraavanlainen:
Tapa tuo kärpänen!
Käteni! Ne ovat päässäni!